# Copyright(c) 2008 Tri Tech Information Systems Inc. 
# Distributed under the Boost Software License, Version 1.0.
#     (See accompanying file ../../LICENSE_1_0.txt or copy at
#           http://www.boost.org/LICENSE_1_0.txt)
#     
def arg_test():
    """
    >>> from interface import *
    >>> DoSomething(2)
    >>> r = ReferenceType()
    >>> v = ValueType()
    >>> DoSomething(2, 5.0, r, v)
    >>> DoSomething(2, 5.0, r)
    >>> DoSomething(2, 5.0)
    >>> DoSomething(2, ref = r)
    >>> DoSomething(2, val = v)

    >>> DoSomethingElse(True)
    >>> DoSomethingElse(False, ValueType() )

    >>> JustDoIt()
    >>> JustDoIt(True)
    >>> JustDoIt(True, 15)
    >>> JustDoIt(True, 15, 'd')
    >>> JustDoIt(True, 16, 'e', ValueType.null)

    >>> r.Explode(12)
    >>> r.Explode(15, ValueType() )

    """

def error_test():
    """
    >>> from interface import *
    >>> DoSomething()
    Traceback (most recent call last):
        ...
    ArgumentError: Python argument types in
        interface.DoSomething()
    did not match C++ signature:
        DoSomething(int need, float optional=2.0,...ref=None,...val=ValueType::null)

    The ... is used since the exact text generated differs depending on compiler        
    """

def bugcheck_test():
    """
    >>> from interface import *
    >>> BugCheck(5, "hello")
    >>> BugCheck(2)
    """

if __name__ == '__main__':
    import doctest
    import sys
    sys.exit(doctest.testmod(optionflags = doctest.ELLIPSIS, report = True)[0])

